那我們就來看如何將GPT-2訓練成一位作家,如果喜歡走理論派的可以看這篇,如果走實作派可以看這篇以及搭配影片,我喜歡速成所以走實作派,簡介如下。
內容引述了一包Github的project,可以兩部分,第一部分是環境設定,簡單說有3個重點,第一,新版的code設定必須要用GPU跑,所以也可以選舊版的可以用CPU跑,第二,若用GPU跑則要注意對應的軟體、驅動程式、和環境的版本,第三,沒課金的玩家像本人我沒有GPU,也可以考慮如之前練習課程中所提,用Colab跑,但它有提供一定的額度。所以第一步環境就不詳細介紹,有需要再請自行點連結看原文和影片。
第二部分就是實作結果,由於此project已經分別包好一個訓練的py程式碼和一個生成的py程式碼,所以只需要根據文件下對應的參數。
在訓練的部分,作者有提供金庸全集文本,或是我們也可以自行提供資料庫,而根據作者的經驗分享,他的電腦在有GPU訓練一個epoch就要約80分鐘,而他建議至少30個epoch以上,最好100個epoch,所以是需要大約6天等級的時間,訓練期間可儲存各次epoch結果的模型。
在生成方面,作者也有提供兩個訓練好的模型,一個是根據剛所說金庸小說,另一個是經濟日報,真是佛心來的!我們直接來看他所提供金庸小說模型,以"張無忌見三名老僧在片刻間連斃崑崙派四位高手,"作為開頭,創作的250字極短篇4組:
可以看到語意確實寫得有模有樣!所以只要我們有模型和程式碼,隨口一句都能七步成詩。但仔細看,在語句長時,段落和段落間連結性薄弱,轉折會有些突兀,這跟我們之前在課程中訓練英文生成句子時,看到的缺陷仍是存在的。
我們比對剛才理論那篇作者的另一篇文章,是用TensorFlow的LSTM架的模型,也就是我們訓練課程時所用的,他有提供一個線上的把玩成果,我們設定同樣參數250個字和溫度0.7,但它引言無法輸入只能自己亂數產生,我試了個結果如下:
可以看到單句語意都是可以理解的,但同樣在段落和段落間轉折會很突兀,而且語句和語句間的連結性較差。
另外也有被我測出有fail情況產生: